package com.glink.manage.dto.equip;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.glink.common.serializer.JsonDate3DeSerializer;
import com.glink.common.serializer.JsonDate3Serializer;
import com.glink.manage.dto.equip.channel.PatrolIntelligentEquipChannelDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author lumm
 * @since 2025/1/8
 **/
@Data
public class PatrolIntelligentEquipDTO implements Serializable {

    @ApiModelProperty(value = "obj_id")
    private String objId;

    @ApiModelProperty(value = "所属工程")
    private String constructionWorkId;

    @ApiModelProperty(value = "所属施工现场")
    private String constructionWorkSiteId;

    @ApiModelProperty(value = "设备名称")
    private String patrolDeviceName;

    @ApiModelProperty(value = "设备编码")
    private String patrolDeviceCode;

    @ApiModelProperty(value = "所属品牌(代码:BrandType,1海康;2大华;3集联科)")
    private String brand;

    @ApiModelProperty(value = "使用类型(代码:UseType):10枪机;11球机;12云台;13微型摄像机;14卡片机;15双目摄像机")
    private String useMode;

    @ApiModelProperty(value = "视频类型(代码:VideoType):1可见光;2红外;3可见光与红外")
    private String videoMode;

    @ApiModelProperty(value = "统一视频平台编码")
    private String videoCode;

    @ApiModelProperty(value = "设备类型(代码:VideoDeviceType):" +
                                "1室外轮式机器人;" +
                                "2室内轮式机器人;" +
                                "3挂轨机器人;" +
                                "10摄像机;" +
                                "11硬盘录像机;" +
                                "12智能分析主机;" +
                                "13无人机;" +
                                "14声纹;" +
                                "15无人机机巢;" +
                                "20区域巡视主机;" +
                                "21边缘节点;" +
                                "90机器人巡视主机;" +
                                "91无人机巡视主机")
    private String deviceType;

    @ApiModelProperty(value = "设备型号")
    private String deviceModel;

    @ApiModelProperty(value = "生产日期(声纹)")
    private Date productTime;

    @ApiModelProperty(value = "编码(声纹)")
    private String serialNumber;

    @ApiModelProperty(value = "投运时间")
    @JsonSerialize(using = JsonDate3Serializer.class)
    @JsonDeserialize(using = JsonDate3DeSerializer.class)
    private Date runTime;

    @ApiModelProperty(value = "退运日期")
    @JsonSerialize(using = JsonDate3Serializer.class)
    @JsonDeserialize(using = JsonDate3DeSerializer.class)
    private Date outageTime;

    @ApiModelProperty(value = "运行状态")
    private String runStatus;

    @ApiModelProperty(value = "出厂编号")
    private String productCode;

    @ApiModelProperty(value = "登录账号")
    private String cameraAccount;

    @ApiModelProperty(value = "登录密码")
    private String cameraPassword;

    @ApiModelProperty(value = "IP地址")
    private String ipAddress;

    @ApiModelProperty(value = "mac地址")
    private String macAddress;

    @ApiModelProperty(value = "端口号")
    private String portNum;

    @ApiModelProperty(value = "平台接入协议: 1:GB28181协议;2:rtsp协议;3:B接口协议")
    private String agreement;

    @ApiModelProperty(value = "是否支持云台控制,0为false，1为true")
    private String ptz;

    @ApiModelProperty(value = "硬盘录像机开始通道号/声纹通道数")
    private String channelNumber;

    @ApiModelProperty(value = "硬盘录像机总存储(单位TB)")
    private String storage;

    @ApiModelProperty(value = "红外功能是否开启,0为false，1为true")
    private String infrared;

    @ApiModelProperty(value = "可见光功能是否开启,0为false，1为true")
    private String visibleLight;

    @ApiModelProperty(value = "黑夜功能是否开启,0为false，1为true")
    private String night;

    @ApiModelProperty(value = "移动侦探功能是否开启,0为false，1为true")
    private String move;

    @ApiModelProperty(value = "雨刷功能是否开启,0为false，1为true")
    private String wiper;

    @ApiModelProperty(value = "生产厂家")
    private String manufacturer;

    @ApiModelProperty(value = "使用单位id")
    private String useUnit;

    @ApiModelProperty(value = "使用单位名称")
    private String useUnitName;

    @ApiModelProperty(value = "安装位置")
    private String place;

    @ApiModelProperty(value = "是否局域网,0为false，1为true")
    private String lan;

    @ApiModelProperty(value = "对讲功能,0为不支持，1为支持")
    private String talk;

    @ApiModelProperty(value = "备注信息")
    private String remark;

    @ApiModelProperty(value = "是否轮转:0不轮转;1轮转(当装置类型为机器人时)")
    private String transport;

    @ApiModelProperty(value = "设备主人")
    private String equipmentOwner;

    @ApiModelProperty(value = "铭牌图片")
    private String nameplateImage;

    @ApiModelProperty(value = "正面图片")
    private String frontImage;

    @ApiModelProperty(value = "背面图片")
    private String backImage;

    @ApiModelProperty(value = "左侧图片")
    private String leftImage;

    @ApiModelProperty(value = "右侧图片")
    private String rightImage;

    @ApiModelProperty(value = "防水等级(声纹)")
    private String waterproofLevel;

    @ApiModelProperty(value = "阵列功耗(声纹)")
    private String arrayConsumption;

    @ApiModelProperty(value = "工作温度范围(声纹)")
    private String temperatureRange;

    @ApiModelProperty(value = "阵列重量(声纹)")
    private String arrayWeight;

    @ApiModelProperty(value = "灵敏度(声纹)")
    private String sensitivity;

    @ApiModelProperty(value = "频响范围(声纹)")
    private String frequencyRange;

    @ApiModelProperty(value = "采样频率(声纹)")
    private String samplingFrequency;

    @ApiModelProperty(value = "阵列孔径(声纹)")
    private String arrayAperture;

    @ApiModelProperty(value = "阵元个数(声纹)")
    private String arrayElementNum;

    @ApiModelProperty(value = "采集功能(声纹)")
    private String collectionFunction;

    @ApiModelProperty(value = "报警功能(声纹)")
    private String policeFunction;

    @ApiModelProperty(value = "摄像机是否在线,0为false，1为true")
    private String isOnline;

    @ApiModelProperty(value = "通道列表")
    private List<PatrolIntelligentEquipChannelDTO> channelDTOList;
}
